﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Cotizav.LogicaNegocio
{
    public class ListaTarifaBLL
    {
        internal int Registrar(Util.ContextoDB ctx, Entidades.Equipo newEquipo, Entidades.ListaTarifa newListaTarifa)
        {
            if (string.IsNullOrWhiteSpace(newListaTarifa.Moneda))
            {
                throw new ApplicationException("Campo de moneda se encuentra vacío.");
            }

            if (!newListaTarifa.HoraxDia.HasValue)
            {
                throw new ApplicationException("Campo de 'Horas/Día' se encuentra vacío.");
            }

            if (!newListaTarifa.HoraxSemana.HasValue)
            {
                throw new ApplicationException("Campo de 'Horas/Semana' se encuentra vacío.");
            }

            if (!newListaTarifa.HoraxMes.HasValue)
            {
                throw new ApplicationException("Campo de 'Horas/Mes' se encuentra vacío.");
            }

            if (!newListaTarifa.TarifaHoraDia.HasValue)
            {
                throw new ApplicationException("Campo de 'Tarifa/Día' se encuentra vacío.");
            }

            if (!newListaTarifa.TarifaHoraSemana.HasValue)
            {
                throw new ApplicationException("Campo de 'Tarifa/Semana' se encuentra vacío.");
            }

            if (!newListaTarifa.TarifaHoraMes.HasValue)
            {
                throw new ApplicationException("Campo de 'Tarifa/Mes' se encuentra vacío.");
            }

            if (!newListaTarifa.TarifaTotalDia.HasValue)
            {
                throw new ApplicationException("Campo de 'TarifaTotal/Día' se encuentra vacío.");
            }

            if (!newListaTarifa.TarifaTotalSemana.HasValue)
            {
                throw new ApplicationException("Campo de 'TarifaTotal/Semana' se encuentra vacío.");
            }

            if (!newListaTarifa.TarifaTotalMes.HasValue)
            {
                throw new ApplicationException("Campo de 'TarifaTotal/Mes' se encuentra vacío.");
            }

            AccesoDatos.ListaTarifaDAO listaTarifaDAO = new AccesoDatos.ListaTarifaDAO();
            int resultado = 0;

            resultado = listaTarifaDAO.Registrar(ctx, newEquipo, newListaTarifa);

            return resultado;
        }

        public List<Entidades.ListaTarifa> Listar()
        {
            AccesoDatos.ListaTarifaDAO listaTarifaDAO = new AccesoDatos.ListaTarifaDAO();

            using (Util.ContextoDB ctx = Util.ContextoDB.GetContexto())
            {
                return listaTarifaDAO.Listar(ctx);
            }
        }

        public Entidades.ListaTarifa Listar(Entidades.Equipo selectedEquipo)
        {
            List<Entidades.ListaTarifa> lista = Listar();

            return lista.Where(x => (x.IdEquipo.HasValue ? x.IdEquipo.Value : -1) == selectedEquipo.IdEquipo).FirstOrDefault();
        }
    }
}
